تألیف: حمید وثیق زاده انصاری
منبع:راسخون




 
از قرن ها پیش، هنگامی که می خواستند اطلاعاتی را برای یک فرد به خصوص بفرستند بدون این که دیگران از مضمون آن آگاه شوند، از علم رمز شناسی استفاده می شده است. روشهای رمز گذاری و رمز گشایی از زمان به وجود آمدنشان تا به امروز چندین برابر زیاد شده اند. بیایید با برخی از الگوریتم های جالب دنیای رمز شناسی آشنا شویم.
رمز شناسی، از پیشینه ی تاریخی گسترده‌ای برخوردار است. در طول تاریخ، سیاست مردان، نیروهای نظامی و عشاق از رمز شناسی استفاده می کردند که دراین بین، نیروهای نظامی اصلی‌ترین نقش را در ایجاد تکنیکهای جدید رمز گذاری و رمز گشایی و رساندن علم رمزشناسی به مرحله ای که امروزدر آن قرار دارد ایفا کردند.
در رمز شناسی سنتی برای رمز گذاری و رمز گشایی از تکنیک های جا به جا کردن و تعویض حروف با کلیدهایی بسیار طولانی استفاده می کردند. در رمز نگاری به شیوه سنتی ، به یک کد رمز گذاری، یک کد رمز گشایی و هم چنین متنی برای رمز گذاری نیاز بود. پیغامی که قرار بود رمز گذاری شود را با تابعی پارامتری شده توسط یک کلید، تغییر شکل می دادند. به خروجی حاصل از رمز گذاری داده ها، علائم رمز گفته می شد. سپس علائم رمز را از طریقی به طرف مقابل مخابره کرده و برایش می فرستادند. در نهایت هم، شخصی که قرار بوده پیغام را دریافت کند، با کلید کد گشایی، علائم رمز را کد گشایی کرده و اطلاعات اصلی را از آن استخراج می کرد. روش های بسیاری برای رمز گذاری و رمز گشایی اطلاعات وجود داشت ولی مهم ترین قسمت قضیه، کلید رمز بود. طراحی کلید، یک مسئله ی اساسی بود.
در گذشته، در الگوریتم های رمز گذاری و رمز گشایی، برای حفظ امنیت از کلیدهای بسیار طولانی استفاده می کردند. امروزه الگوریتم رمز گذاری چنان پیچیده شده است که حتی اگر کسی اطلاعات زیادی راجع به علائم رمز داشته باشد، در صورت دست یابی به آن، چیزی از آن نخواهد فهمید.
امروزه، تکنیک های جا به جا کردن و تعویض حروف از طریق مدارات ساده ای انجام می شوند، که این مدارات از جا به جایی خطوط ورودی استفاده کرده و خروجی تغییر یافته را تولید می کنند؛ به این وسیله جعبه P-box گفته می شود. از P-box برای ایجاد جا به جایی در یک ورودی 8 بیتی (یا بیشتر) استفاده می کنند. بگذارید یک مثال بزنیم: اگر ما یک ورودی 8 بیتی داشته باشیم: 01234567، و آن را به عنوان ورودی به p-box بدهیم، خروجی P-box عبارت خواهد بود از25764031. در کلمات ساده، محل قرار گیری بیتها تغییر می کند. بنابرین با P-box می توان هر نوع جا به جایی را در زمانی تقریباً برابر صفر انجام داد.
کار بعدی، یعنی تعویض، توسط وسیله ای به نامS-box انجام می شود. برای مثال اگر ما یک S-box ساده را که شامل یک دکدر 3 به 8 باشد، در ورودی قرار داده و یک P-box و یک انکودر 8 به 3 را در خروجی بگذاریم، در این صورت اگر یک متن ساده 3 بیتی را به ورودی بدهیم، علائم رمز 3 بیتی را در خروجی خواهیم داشت. دکدر 3 به 8 داده های 3 بیتی را به داده های 8 بیتی تبدیل می کند و این داده های 8 بیتی، دروناً تغییرشکل داده می شوند. ورودی 3 بیتی، یکی از 8 خط موجود از اولین مرحله را انتخاب کرده، آن را یک و بقیه خطوط را صفر می کند. سپس، این داده های دریافت شده، با استفاده از انکدر 8 به 3، به داده هایی 3 بیتی تبدیل می شوند. وسیله ای که از آن برای جا به جا کردن داده ی 8 بیتی استفاده می شود یک P-box است که طرز کارش پیش تر در بالا توضیح داده شد. در سومین مرحله، S-box، خط ورودی‌ای که توسط P-box انتخاب شده بود را دو باره به صورت باینری کد می کند. بنا بر این اگر یک عدد اکتال، مثلاً 01234567 به عنوان ورودی انتخاب شده باشد ترتیب خروجی عبارت خواهد بود با 3461705 که در آن 3 به جای 0، 4 به جای 1 قرار گرفته و مابقی نیز به همین ترتیب جا به جا شده اند. بنا بر این با استفاده از سیم کشی مناسب P-box درون S-box ، هر مدل تعویضی را می توان اعمال کرد.
این روش در نگاه اول به نظر می رسد ساده و بی فایده باشد، ولی با ایجاد ترکیبی مناسب از همین عوامل اولیه و اساسی، می‌توان به یک مکانیزم رمز نگاری بسیار پر قدرت دست یافت. برای مثال فرض کنید می خواهیم یک داده ی 12 بیتی را رمز گذاری کنیم. پس در مرحله ی اول جا به جایی 12 خط ورودی انجام می شود. در مرحله ی دوم، 4 تا S-box سه بیتی را گرفته و توسط آن، یک عدد 12 بیتی را، به عدد 12 بیتی دیگری تبدیل می کنیم. سپس در مرحله ی بعد، از یک P-box، برای محاسبه ی ترا نهاده استفاده می گردد. از این ترتیبِ به خصوص، برای ساخت جعبه ی "تولید علائم رمز"، استفاده می‌گردد که در آن،S-box وP-box با ترتیبی خاص، با هم ترکیب شده‌اند. اگر به جعبه ی تولید علائم رمز، مراحل زیادی را بیافزاییم، خروجی، می تواند تابع بسیار پیچیده ای از ورودی باشد.